luci-app-snmpd: add Log Settings
authorChristian Korber <[email protected]>
Mon, 29 Jul 2024 11:47:35 +0000 (13:47 +0200)
committerPaul Donald <[email protected]>
Wed, 3 Sep 2025 18:55:05 +0000 (20:55 +0200)
In this commit logging functionality is added.
It is possible to log to syslog or file.

Signed-off-by: Christian Korber <[email protected]>
applications/luci-app-snmpd/htdocs/luci-static/resources/view/snmpd/snmpd.js

index 4d1b422645b35e160039e0332acc5e78e65026d8..141b59a914b8746f9fb9ea0b512aa155a9f556ad 100644 (file)
@@ -276,6 +276,67 @@ return L.view.extend({
                go.rmempty = false;
        },
 
+       populateLogSettings: function(tab, s) {
+               let g, go, o;
+
+               o = s.taboption(tab, form.SectionValue, '__log__',
+                       form.GridSection, tab, null,
+                       _('Here you can configure Logging settings'));
+
+               g = o.subsection;
+               g.anonymous = true;
+               g.addremove = true;
+               g.nodescriptions = true;
+
+               go = g.option(form.Flag, 'file',
+                       _('Enable logging to file'));
+               go.default = '0';
+               go.rmempty = false;
+               go.optional = false;
+
+               go = g.option(form.Value, 'log_file',
+                       _('Path to log file'));
+               go.default = '/var/log/snmpd.log';
+               go.rmempty = false;
+               go.placeholder = '/var/log/snmpd.log';
+               go.depends('file', '1');
+
+               go = g.option(form.ListValue, 'log_file_priority',
+                       _('Priority for file logging'),
+                       _('Will log messages of selected priority and above.'));
+               go.default = 'i';
+               go.value('!', 'LOG_EMERG');
+               go.value('a', 'LOG_ALERT');
+               go.value('c', 'LOG_CRIT');
+               go.value('e', 'LOG_ERR');
+               go.value('w', 'LOG_WARNING');
+               go.value('n', 'LOG_NOTICE');
+               go.value('i', 'LOG_INFO');
+               go.value('d', 'LOG_DEBUG');
+               go.depends('file', '1');
+
+               go = g.option(form.Flag, 'log_syslog',
+                       _('Enable logging to syslog'));
+               go.default = '0';
+               go.rmempty = false;
+               go.optional = false;
+
+               go = g.option(form.ListValue, 'log_syslog_facility',
+                       _('Syslog facility'));
+               go.default = 'd';
+               go.value('d', 'LOG_DAEMON');
+               go.value('u', 'LOG_USER');
+               go.value('0', 'LOG_LOCAL0');
+               go.value('1', 'LOG_LOCAL1');
+               go.value('2', 'LOG_LOCAL2');
+               go.value('3', 'LOG_LOCAL3');
+               go.value('4', 'LOG_LOCAL4');
+               go.value('5', 'LOG_LOCAL5');
+               go.value('6', 'LOG_LOCAL6');
+               go.value('7', 'LOG_LOCAL7');
+               go.depends('log_syslog', '1');
+       },
+
        render: function(data) {
                let m, s, o, g, go;
 
@@ -429,6 +490,9 @@ return L.view.extend({
                this.populateTrapsSettings('trap_HostIP', 'Traps via IP-Address',
                        s, 'HostIP');
 
+               s.tab('log', _('Logging'));
+               this.populateLogSettings('log', s);
+
                return m.render();
        },